//package com.zhouyu.jpademo.service;
//
//import com.querydsl.jpa.impl.JPAQueryFactory;
//import com.zhouyu.jpademo.entity.oneToMany.bothway.GoodItem;
//import com.zhouyu.jpademo.entity.oneToMany.bothway.GoodOrder;
//import com.zhouyu.jpademo.repository.oneToMany.GoodDao;
//import com.zhouyu.jpademo.repository.oneToMany.OrderDao;
//import java.util.HashSet;
//import javax.annotation.PostConstruct;
//import javax.persistence.EntityManager;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
///**
// * @Description:
// */
//@Service
//public class OrderService {
//
//  /**
//   * 实体管理对象
//   */
//  @Autowired
//  private EntityManager entityManager;
//
//  /**
//   * jpa查询工厂对象
//   */
//  private JPAQueryFactory queryFactory;
//
//
//  @PostConstruct
//  public void init() {
//    queryFactory = new JPAQueryFactory(entityManager);
//  }
//
//  @Autowired
//  OrderDao orderDao;
//
//  @Autowired
//  GoodDao goodDao;
//
//  /**
//   * 因为设置了一方级联操作是ALL，所以可以级联保存GoodItem
//   */
//  @Transactional(rollbackFor = {RuntimeException.class})
//  public void create1() {
//    GoodOrder goodOrder = new GoodOrder();
//    goodOrder.setName("我是订单1");
//    goodOrder.setPasssword("123456");
//    HashSet<GoodItem> goodItems = new HashSet<GoodItem>(){
//      private static final long serialVersionUID = -8649184866024181604L;
//
//      {
//        add(new GoodItem("订单详情1", "001", goodOrder));
//        add(new GoodItem("订单详情2", "002", goodOrder));
//        add(new GoodItem("订单详情3", "003", goodOrder));
//    }};
//    goodOrder.setGoodItems(goodItems);
//    orderDao.save(goodOrder);
//  }
//
//  /**
//   * 使用DSL实现关联查询
//   */
////  public List<GoodOrder> dslSubQuery() {
////    QGoodOrder goodOrder = QGoodOrder.goodOrder;
////    QGoodItem goodItem = QGoodItem.goodItem;
////    JPAQuery<GoodOrder> goodOrders = queryFactory.selectFrom(goodOrder).leftJoin(goodItem).on(goodOrder.id.eq(goodItem.order.id).and(goodItem.code.eq("002")));
////    List<GoodOrder> goodOrderList = goodOrders.fetch();
////    return goodOrderList;
////  }
//
//  public GoodOrder getSelfQuery() {
//    return orderDao.findLeft();
//  }
//
//  public GoodOrder getOrder(Long id) {
//    return orderDao.findById(id).get();
//  }
//}
